package schema

import (
	"time"
)

// GroupNotification 群通知对象
type GroupNotification struct {
	ID            string    `json:"id"`                                  // 唯一标识
	GroupId       string    `json:"group_id" binding:"required"`         // 群ID
	ContentId     string    `json:"content_id"`                          // 内容ID,点赞时关联语音视频内容ID
	NotifyImage   string    `json:"notify_image"`                        // 通知内容图片
	NotifyContent string    `json:"notify_content"`                      // 通知内容
	Type          int       `json:"type" binding:"required,max=6,min=1"` // 类型(1:私发消息 2:群发消息 3:语音点赞 4:视频点赞 5:语音收藏 6:视频收藏)
	Creator       string    `json:"creator"`                             // 创建者
	CreatedAt     time.Time `json:"created_at"`                          // 创建时间
	UpdatedAt     time.Time `json:"updated_at"`                          // 更新时间
}

// GroupNotificationUpdate 群通知对象
type GroupNotificationUpdate struct {
	ID            string    `json:"id"`                                   // 唯一标识
	GroupId       string    `json:"group_id" binding:"omitempty"`         // 群ID
	ContentId     string    `json:"content_id"`                           // 内容ID,点赞时关联语音视频内容ID
	NotifyImage   string    `json:"notify_image"`                         // 通知内容图片
	NotifyContent string    `json:"notify_content"`                       // 通知内容
	Type          int       `json:"type" binding:"omitempty,max=6,min=1"` // 类型(1:私发消息 2:群发消息 3:语音点赞 4:视频点赞 5:语音收藏 6:视频收藏)
	Creator       string    `json:"creator"`                              // 创建者
	CreatedAt     time.Time `json:"created_at"`                           // 创建时间
	UpdatedAt     time.Time `json:"updated_at"`                           // 更新时间
}

func (a *GroupNotificationUpdate) ToGroupNotification() *GroupNotification {
	return &GroupNotification{
		ID:            a.ID,
		GroupId:       a.GroupId,
		ContentId:     a.ContentId,
		NotifyImage:   a.NotifyImage,
		NotifyContent: a.NotifyContent,
		Type:          a.Type,
		Creator:       a.Creator,
		CreatedAt:     a.CreatedAt,
		UpdatedAt:     a.UpdatedAt,
	}
}

// GroupNotificationQueryParam 查询条件
type GroupNotificationQueryParam struct {
	PaginationParam
	GroupId           string `form:"group_id"`       // 群ID
	ContentId         string `form:"content_id"`     // 内容ID,点赞时关联语音视频内容ID
	NotifyImage       string `form:"notify_image"`   // 通知内容图片
	LikeNotifyContent string `form:"notify_content"` // 通知内容
	NotifyContent     string `form:"notify_content"` // 通知内容
	Type              int    `form:"type"`           // 类型(1:私发消息 2:群发消息 3:语音点赞 4:视频点赞 5:语音收藏 6:视频收藏)
	Creator           string `form:"creator"`        // 创建者

}

// GroupNotificationQueryOptions 查询可选参数项
type GroupNotificationQueryOptions struct {
	OrderFields []*OrderField // 排序字段
}

// GroupNotificationQueryResult 查询结果
type GroupNotificationQueryResult struct {
	Data       GroupNotifications
	PageResult *PaginationResult
}

// GroupNotifications 群通知列表
type GroupNotifications []*GroupNotification
